//
//  NSString+JZCheck.m
//  JFTwxsd
//
//  Created by Peter on 2018/4/11.
//  Copyright © 2018年 junfeiweiyejiaoyujituan. All rights reserved.
//

#import "NSString+JZCheck.h"

@implementation NSString (JZCheck)

+ (NSMutableString *)JZInsertVoidInMobileNum:(NSString *)mobileNum {
    if (mobileNum.length == 0 || mobileNum == nil || [mobileNum isKindOfClass:[NSNull class]]) {
        return [@"" mutableCopy];
    }
    NSMutableString *destStr = [NSMutableString stringWithString:mobileNum];
    [destStr insertString:@" " atIndex:3];
    [destStr insertString:@" " atIndex:8];
    return destStr;
}

+ (NSString *)JZCheckMobileAgent:(NSString *)mobileNum {
    if (mobileNum.length != 11) {
        return @"";
    }
    /**
     * 手机号码:
     * 13[0-9], 14[5,7], 15[0, 1, 2, 3, 5, 6, 7, 8, 9], 17[6, 7, 8], 18[0-9], 170[0-9]
     * 移动号段: 134,135,136,137,138,139,150,151,152,157,158,159,182,183,184,187,188,147,178,1705
     * 联通号段: 130,131,132,155,156,185,186,145,176,1709
     * 电信号段: 133,153,180,181,189,177,1700
     */
    NSString *MOBILE = @"^1(3[0-9]|4[57]|5[0-35-9]|8[0-9]|7[0678]|9[9])\\d{8}$";
    /**
     * 中国移动：China Mobile
     * 134,135,136,137,138,139,150,151,152,157,158,159,182,183,184,187,188,147,178,1705
     */
    NSString *CM = @"(^1(3[4-9]|4[7]|5[0-27-9]|7[8]|8[2-478])\\d{8}$)|(^1705\\d{7}$)";
    /**
     * 中国联通：China Unicom
     * 130,131,132,155,156,185,186,145,176,1709
     */
    NSString *CU = @"(^1(3[0-2]|4[5]|5[56]|7[6]|8[56])\\d{8}$)|(^1709\\d{7}$)";
    /**
     * 中国电信：China Telecom
     * 133,153,180,181,189,177,1700,199
     */
    NSString *CT = @"(^1(33|53|77|8[019]|9[9])\\d{8}$)|(^1700\\d{7}$)";
    
    
    NSPredicate *regextestmobile = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", MOBILE];
    NSPredicate *regextestcm = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CM];
    NSPredicate *regextestcu = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CU];
    NSPredicate *regextestct = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CT];
    
    /**    if (([regextestmobile evaluateWithObject:mobileNum] == YES)
     || ([regextestcm evaluateWithObject:mobileNum] == YES)
     || ([regextestct evaluateWithObject:mobileNum] == YES)
     || ([regextestcu evaluateWithObject:mobileNum] == YES)) {
     return YES;
     } else {
     return NO;
     }*/
    
    if ([regextestmobile evaluateWithObject:mobileNum] == YES) {
        if ([regextestcm evaluateWithObject:mobileNum] == YES) {
            return @"中国移动";
        } else if ([regextestct evaluateWithObject:mobileNum] == YES) {
            return @"中国电信";
        } else if ([regextestcu evaluateWithObject:mobileNum] == YES) {
            return @"中国联通";
        } else {
            return @"未知号码";
        }
    } else {
        return @"";
    }
}

+ (BOOL)JZCheckIsRightMobile:(NSString *)mobileNum {
    if (mobileNum.length != 11) {
        return NO;
    }
    /**
     * 手机号码:
     * 13[0-9], 14[5,7], 15[0, 1, 2, 3, 5, 6, 7, 8, 9], 17[6, 7, 8], 18[0-9], 170[0-9]
     * 移动号段: 134,135,136,137,138,139,150,151,152,157,158,159,182,183,184,187,188,147,178,1705
     * 联通号段: 130,131,132,155,156,185,186,145,176,1709
     * 电信号段: 133,153,180,181,189,177,1700
     */
    NSString *MOBILE = @"^1(3[0-9]|4[57]|5[0-35-9]|8[0-9]|7[0678]|9[9])\\d{8}$";
    /**
     * 中国移动：China Mobile
     * 134,135,136,137,138,139,150,151,152,157,158,159,182,183,184,187,188,147,178,1705
     */
    NSString *CM = @"(^1(3[4-9]|4[7]|5[0-27-9]|7[8]|8[2-478])\\d{8}$)|(^1705\\d{7}$)";
    /**
     * 中国联通：China Unicom
     * 130,131,132,155,156,185,186,145,176,1709
     */
    NSString *CU = @"(^1(3[0-2]|4[5]|5[56]|7[6]|8[56])\\d{8}$)|(^1709\\d{7}$)";
    /**
     * 中国电信：China Telecom
     * 133,153,180,181,189,177,1700,199
     */
    NSString *CT = @"(^1(33|53|77|8[019]|9[9])\\d{8}$)|(^1700\\d{7}$)";
    
    
    NSPredicate *regextestmobile = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", MOBILE];
    NSPredicate *regextestcm = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CM];
    NSPredicate *regextestcu = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CU];
    NSPredicate *regextestct = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CT];
    
    if (([regextestmobile evaluateWithObject:mobileNum] == YES)
     || ([regextestcm evaluateWithObject:mobileNum] == YES)
     || ([regextestct evaluateWithObject:mobileNum] == YES)
     || ([regextestcu evaluateWithObject:mobileNum] == YES)) {
        return YES;
     } else {
         return NO;
     }
}

+ (BOOL)inputPureNum:(NSString *)target {
    NSCharacterSet *cs = [[NSCharacterSet characterSetWithCharactersInString:@"0123456789"]invertedSet];
    NSString  *filtered = [[target componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];
    BOOL basicTest = [target isEqualToString:filtered];
    if (!basicTest) {
        return NO;
    }
    if ([target isEqualToString:@" "]) {
        return NO;
    }
    return YES;
}

+ (NSString *)getIpAddress {
    NSError *error;
    NSURL *ipURL = [NSURL URLWithString:@"http://pv.sohu.com/cityjson?ie=utf-8"];
    NSMutableString *ip = [NSMutableString stringWithContentsOfURL:ipURL encoding:NSUTF8StringEncoding error:&error];
    if ([ip hasPrefix:@"var returnCitySN = "]) {
        NSRange range = NSMakeRange(0, 19);
        [ip deleteCharactersInRange:range];
        NSString * nowIp =[ip substringToIndex:ip.length-1];
        NSData * data = [nowIp dataUsingEncoding:NSUTF8StringEncoding];
        
        NSDictionary * dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
        NSLog(@"%@",dict);
        return dict[@"cip"] ? dict[@"cip"] : @"";
    }
    return @"";
}

@end
